// @日期：2018年9月15日
// @描述：酒店详情页页面逻辑
// @tips：需要在最外层使用layui.use layer

function openGoodsDetail(goodsObj) {
    // openGoodsDetail 参数表
    // begintime: 1533513600000
    // endtime: 1538438400000
    // exrate: "7"
    // goodscount: 5
    // imgurl: "../../img/exchange/ad2.jpg"
    // extype:6007 6008 兑换类型
    // roomname: "九龙大酒店"
    // goodsname:""兑换券名字
    // sourceId:""房源
    // data:""使用日期
    // count: 房源数量
    // roomdrc：房间描述

    layui.use(['layer', 'form', 'table'], function () {
        var layer = layui.layer,
            $ = layui.$,
            form = layui.form,
            table = layui.table;


        layer.open({
            type: 2, //iframe层弹窗
            title: "酒店详情", //弹窗标题
            content: 'exchangeGoodsDetail.html', //弹窗内容
            area: ["1200px", "600px"], //设置弹窗宽高
            resize: false, //不允许拉抻
            success: function (layero, index) { //成功弹出后的回调
                console.log("点击后的酒店信息对象");
                console.log(goodsObj);
                // 渲染兑换表单、历史纪录
                setTimeout(() => {
                    // 获取弹窗框架
                    var frameWindow = document.getElementById("layui-layer-iframe" + index).contentWindow;
                    exchangeJudge(frameWindow); //判断是否可以兑换
                    getHistory(frameWindow); //获取历史纪录
                    activeSubmit(frameWindow); //激活提交逻辑
                }, 500);
            }
        });
    })

    function exchangeJudge(frameWindow) {
        // 判断是否可以兑换
        initShow(frameWindow); //初始化显示

        // 判断是否在时间效期内
        var exchangeRate = frameWindow.document.getElementById("exchangeRate").getAttribute("value");
        var exchangeTicket = frameWindow.document.getElementById("exchangeTicket").getAttribute("value");
        var exchangeNum = exchangeTicket / exchangeRate; //计算可以选择的选项
        var beginTime = frameWindow.$("#exchangeBeginTime").attr("value");
        var endTime = frameWindow.$("#exchangeEndTime").attr("value");
        var presentTime = new Date().getTime();
        if (presentTime < beginTime || presentTime > endTime) {
            frameWindow.layer.msg("兑换券不在兑换效期内，不可兑换！");
            return false;
        }
        // 可以兑换的房源数量
        if (goodsObj.count <= 0) {
            // 没有房源了
            frameWindow.layer.msg("房源不足，无法兑换！");
            return false;
        }
        if (goodsObj.count <= exchangeNum) {
            // 房源数量小于可兑换数量
            initSelect(frameWindow, goodsObj.count);
        } else {
            // 房源数量大于可兑换数量
            initSelect(frameWindow, exchangeNum);
        }
    }

    function initShow(frameWindow) {
        // 初始化显示
        // 酒店名称
        // 兑换比例
        // 兑换券数量
        // 兑换开始时间
        // 兑换结束时间
        // 房源数量
        // <p id="exchangeName">酒店名称</p>
        // 		<p id="exchangeRate">兑换比例</p>
        // 		<p id="exchangeTicket">兑换券数量</p>
        // 		<p id="exchangeBeginTime">兑换开始时间</p>
        // 		<p id="exchangeEndTime">兑换结束时间</p>
        // 		<p id="exchangeCount">房源数量</p>
        frameWindow.$("#exchangeName").attr("value", goodsObj.roomname).text("酒店名称: " + goodsObj.roomname);
        frameWindow.$("#exchangeRate").attr("value", goodsObj.exrate).text("兑换比例 1:" + goodsObj.exrate);
        frameWindow.$("#exchangeTicket").attr("value", goodsObj.goodscount).text("兑换券数量: " + goodsObj.goodscount);
        frameWindow.$("#exchangeCount").attr("value", goodsObj.count).text("房源数量：" + goodsObj.count);
        frameWindow.$("#exchangeDes").attr("value",goodsObj.roomdrc).text("房源介绍："+ goodsObj.roomdrc);
        frameWindow.$("#exchangeImg").attr("src", goodsObj.imgurl);
    }

    function initSelect(frameWindow, exchangeNum) {
        // 初始化兑换下拉框

        // 获取弹窗中select的值
        // 普通兑换

        var exchangeNumSelect = frameWindow.document.getElementById('exchangeNum');
        if (exchangeNum && exchangeNum >= 0) {
            for (let i = 1; i <= exchangeNum; i++) {
                var option = frameWindow.document.createElement("option");
                option.setAttribute("value", i);
                option.innerText = i + "个";
                exchangeNumSelect.appendChild(option);
            };
        }
        frameWindow.layui.form.render();
    }

    function getHistory(frameWindow) {
        // 获取历史纪录信息
        var timestamp = (new Date()).getTime(); //获取当前时间戳
        var data = {}; //数据表格请求数据
        var cols = []; //数据表格头
        if (goodsObj.extype == 6008) {
            // 秒杀记录
            URL = urlHead2 + "/record/getExchangeRecord";
            data = {
                //测试
                // 参数说明：
                // userId： 用户ID
                // date: 该日期以前的兑换记录
                // extype 兑换类型 6007 普通 6008 秒杀
                "userId": $.cookie("id"),
                "date": new Date(timestamp).Format("yyyy-MM-dd"),
                "extype": goodsObj.extype
            }
            // "sourceid": 24,
            // "killupcode": "5884339929176088577",
            // "roomdrc": "2",
            // "batchcode": "12301238",
            // "count": 5,
            // "endtime": 1538438400000,
            // "begintime": 1533513600000,
            // "roomname": "test_02",
            // "rate": 5,
            // "goodscount": 5
            cols = [
                [ //表头
                    {
                        field: 'sourceId',
                        title: 'ID',
                        sort: true,
                        fixed: 'left'
                    }, {
                        field: 'exchangecode',
                        title: '兑换码',
                    }, {
                        field: 'userid',
                        title: '用户名',
                        sort: true
                    }, {
                        field: 'telephone',
                        title: '联系电话',
                        sort: true
                    }, {
                        field: 'extime',
                        title: '时间'
                    }, {
                        field: 'amount',
                        title: '数量',
                    }, {
                        field: 'extype',
                        title: '兑换类型',
                        sort: true
                    }, {
                        field: 'exrate',
                        title: '兑换比例',
                        sort: true
                    }
                ]
            ]

        } else if (goodsObj.extype == 6007) {
            // 普通兑换记录
            URL = urlHead2 + "/orderup/showExchangeRecode"
            data = { //测试
                // 参数说明：
                // userId： 用户ID
                // date: 该日期以前的兑换记录
                // extype 兑换类型 6007 普通 6008 秒杀
                "userId": $.cookie("id"),
                "date": timestamp,
                "extype": "6007"
            }
            cols = [
                [ //表头
                    {
                        field: 'exid',
                        title: 'ID',
                        sort: true,
                        fixed: 'left'
                    }, {
                        field: 'exchangecode',
                        title: '兑换码',
                    }, {
                        field: 'userid',
                        title: '用户名',
                        sort: true
                    }, {
                        field: 'telephone',
                        title: '联系电话',
                        sort: true
                    }, {
                        field: 'extime',
                        title: '时间'
                    }, {
                        field: 'amount',
                        title: '数量',
                    }, {
                        field: 'extype',
                        title: '兑换类型',
                        sort: true
                    }, {
                        field: 'exrate',
                        title: '兑换比例',
                        sort: true
                    }
                ]
            ]
        }
        console.log("记录请求数据");
        console.log(data);
        frameWindow.layui.table.render({
            elem: '#exchangeHistory',
            height: 312,
            page: true,
            // url: '../../json/goodsDetail.json',
            url: URL,
            headers: {
                "Authorization": $.cookie('access_token')
            },
            where: data,
            cols: cols
        });
    }

    function activeSubmit(frameWindow) {
        //发送兑换请求
        frameWindow.layui.form.on("submit(exchangeSubmit)", function (d) {
            var URL;
            var dataReq = {};
            // 兑换提交
            if (goodsObj.extype == 6008) {
                console.log("秒杀兑换");
                // 秒杀兑换
                // 需要登陆才可以使用
                URL = urlHead2 + "/killup/killupRoom"
                dataReq = {
                    // "killupcode": goodsObj.Killupcode,
                    "killupcode": goodsObj.killupcode,
                    "count": d.field.exchangeNum,
                    "telephnoe": d.field.exchangeTelephone
                }
            } else if (goodsObj.extype == 6007) {
                console.log("普通兑换");
                // 普通兑换
                URL = urlHead2 + "/orderup/upRoom";
                dataReq = {
                    "upcode": goodsObj.upcode,
                    "count": d.field.exchangeNum,
                    "telephnoe": d.field.exchangeTelephone
                }
            }
            console.log(dataReq);
            // 发送兑换请求
            $.ajax({
                type: "POST",
                async: true,
                headers: {
                    "Authorization": $.cookie('access_token')
                },
                url: URL,
                //                 url: "../../json/result.json",
                data: dataReq,
                dataType: "json",
                success: function (response) {
                    console.log(response);
                    if (response.code == 0) {
                        frameWindow.layer.msg('兑换成功');
                    } else {
                        frameWindow.layer.msg(response.msg);
                    }
                    setTimeout(function () {
                        window.location.reload();
                    }, 500);
                },
                error: function (err) {
                    frameWindow.layer.msg(response.msg);
                }
            });
            return false;
        });
    }

}